package ib080542d;

public class LenguageElemCounter {
	
	public int numGlobalPrimitiveDecl;	// broj deklaracija globalnih promenljivih prostog tipa
	public int numGlobalConstDecl;		// broj deklaracija globalnih konstanti
	public int numMainStatements;		// broj iskaza u okviru tela main metoda (osim poziva funkcija)
	public int numBlockCommands;		// broj blokova naredbi
	public int numMainFunctionDef;		// broj definicija funkcija glavnog programa
	public int numGlobalArrayDecl;		// broj deklaracija golobalnih nizova
	public int numMainFunctionCall;		// broj poziva funkcija u okviru tela main metoda
	public int numInnerClassDecl;		// broj deklaracija unutrasnjih klasa
	public int numInnerClassMethodDef;	// broj definicija metoda unutrasljih klasa
	public int numInnerClassInstances;	// broj instanciranja objekata unutrasnjih klasa
		
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("\n******************** Broj leksickih elemenata *********************************");
		sb.append("\n\t" + numGlobalPrimitiveDecl + "\tDeklaracije globalnih promenljivih prostog tipa\n");
		sb.append("\t"  + numGlobalConstDecl + "\tDeklaracije globalnih konstanti\n");
		sb.append("\t" + numMainStatements + "\tIskazi u okviru tela main metoda (osim poziva funkcije)\n");
		sb.append("\t"  + numBlockCommands + "\tBlokovi naredbi\n");
		sb.append("\t" + numMainFunctionDef + "\tDefinicije funkcija glavnog programa\n");
		sb.append("\t" + numGlobalArrayDecl + "\tDeklracije globalnih nizova\n");
		sb.append("\t" + numMainFunctionCall + "\tBroj poziva funkcije u okviru main metoda\n");
		sb.append("\t"  + numInnerClassDecl + "\tDeklaracije unutrasnjih klasa\n");
		sb.append("\t" + numInnerClassMethodDef + "\tDefinicije metoda unutrasnjih klasa\n" );
		sb.append("\t" + numInnerClassInstances + "\tInstance objekata unutrasnjih klasa\n" );
		sb.append("********************************************************************************\n");
		return sb.toString();
		
	}
}